package com.api.entity;

import java.io.Serializable;
import java.util.UUID;

import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.GenericGenerator;

/**
 * 
 * CreateDate:2017年9月28日下午1:31:55 
 * @Description: TODO(这里用一句话描述这个类的作用)  
 * @author:zw
 * @version V1.0
 */
public class BaseEntity implements Serializable{

	/**
	 * serialVersionUID:TODO(用一句话描述这个变量表示什么). 
	 */
	private static final long serialVersionUID = 5623193093589464406L;
	@Id
	@GeneratedValue(generator="UUID")
    @GenericGenerator(name = "UUID", strategy = "uuid")   
	private String id;
	
	/**
	 * 是否是新记录（默认：false），调用setIsNewRecord()设置新记录，使用自定义ID。
	 * 设置为true后强制执行插入语句，ID不会自动生成，需从手动传入。
	 */
	protected boolean isNewRecord = false;


	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public boolean isNewRecord() {
		return isNewRecord || StringUtils.isBlank(getId());
	}

	public void setNewRecord(boolean isNewRecord) {
		this.isNewRecord = isNewRecord;
	}
	
	/**
	 * 插入之前执行方法，子类实现
	 */
	public void preInsert(){
		// 不限制ID为UUID，调用setIsNewRecord()使用自定义ID
		if (!this.isNewRecord){
			setId(UUID.randomUUID().toString().replaceAll("-", ""));
		}

	}


}
